<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Title</title>
</head>
<body>

</body>
<script>
	// 怎么生成一个基本包装类型的包装对象呢?
	// let userName = "lisi";// 创建了一个基本包装类型(string)的数据赋值给变量userName
	// 1- 通过String
	// let my = new String(userName);
	// console.log(my);// 输出字符串对应的包装对象
	// console.log(my.length);// 输出实例属性length
	// console.log(my[0])
	// console.log(my["1"]);
	// console.log(my.slice(1));
	// 2- 可能通过Object,可以根据接收的类型自动转为对应的包装对象
	// console.log(new Object("one"));
	// console.log(new Object(1));
	// console.log(new Object(true));
	
	// 扩展：对象的属性名能否使用数字。
	// 对象的属性只能是字符串，如果是数字会转为字符串
	// let obj = {
	// 	1:"one",
	// 	2:"two"
	// }
	// console.log(obj);
	// console.log(obj[1])
	// console.log(obj["2"])
	
	
	// 基本包装类型不是对象，为什么会有属性呢?
	// 答：因为在使用包装类型下的属性时，会隐式转为包装对象，最后再清空。
	// let userName = "zhangsan";
	// console.log(userName.length);// 8
	// console.log(userName.slice(2));// angsan
	
	// 以上三行代码相当于
	// let _userName = new String("zhangsan");
	// console.log(_userName.length);
	// console.log(_userName.slice(2));
	// _userName = null;
	
	// 引用类型和基本包装类型的区别？
	
	// // 1- 基本包装类型会转为包装对象，然后调用属性或方法，然后清空。
	// // let userName = "zhangsan";
	// // console.log(userName.length);
	//
	// // 2- 基本装类型不可以增加属性或方法
	// // let age = 10;
	// // age.my = 100;
	// // console.log(age.my);// undefined
	//
	// // 以上三行代码相当于：
	// let age = 10;
	// let _age = new Number(age);
	// _age.my = 100;
	// _age = null;
	//
	// let _age1 = new Number(age);
	// console.log(_age1.my);
	
	
	
	
	
	// 如何给基本类型添加方法或者属性呢？
	
	// String.prototype.last = function(){
	// 	return this.slice(this.length-1);
	// }
	//
	// let userName = "zhangsan";
	// console.log(userName.last());// n
	//
	// // let _userName = new String(userName);
	// // console.log(_userName.last());
	// // _userName = null;
</script>
</html>